package com.dingreading.cloud.soms.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 班级信息表
 */
@Data
@Table(value = "ca_class", dataSource = "ds3")
public class MstCaClass implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增主键ID
     */
    @Id(keyType = KeyType.Auto)
    private Long id;

    /**
     * uid
     */
    private String uid;

    /**
     * 班级名称
     */
    private String className;

    /**
     * 所属伙伴 (UID)
     */
    private String agencyUid;

    /**
     * 所属门店唯一标识符 (UID)
     */
    private String storeUid;

    /**
     * 所属门店名称
     */
    private String storeName;

    /**
     * 服务 (UID)
     */
    private String projectUid;

    /**
     * 服务名称
     */
    private String projectName;

    /**
     * 所属阶段唯一标识符 (UID)
     */
    private String stageUid;

    /**
     * 所属阶段名称
     */
    private String stageName;

    /**
     * 上课教室uid
     */
    private String roomUid;

    /**
     * 上课教室名称
     */
    private String roomName;

    /**
     * 授课教师唯一标识符 (UID)
     */
    private String teacherUid;

    /**
     * 授课教师姓名
     */
    private String teacherName;

    /**
     * 班级当前学生人数
     */
    private Integer studentNum;

    /**
     * 总排课/课时数量
     */
    private Integer scheduleNum;

    /**
     * 启用状态 (1: 启用, 0: 禁用)
     */
    private Integer enabled;

    /**
     * 结课状态 (0: 未结课, 1: 已结课)
     */
    private Integer closeStatus;

    /**
     * 是否免费 (0.不消耗次数 1.消耗次数)
     */
    private Integer freeStatus;

    /**
     * 结课操作时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime closeTime;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 记录添加时间
     */
    @Column(onInsertValue = "now()")
    private Date addTime;

    /**
     * 记录最后编辑时间
     */
    @Column(onInsertValue = "now()", onUpdateValue = "now()")
    private Date editTime;

    /**
     * 添加人用户UID
     */
    private String addStaffUid;

    /**
     * 添加人姓名
     */
    private String addStaffName;

    /**
     * 最后修改人用户UID
     */
    private String lastStaffUid;

    /**
     * 最后修改人姓名
     */
    private String lastStaffName;

}
